package com.tencent.iov.cowin.befsale.clue.service.cus;

import com.tencent.iov.cowin.befsale.clue.controller.cus.vo.request.*;
import com.tencent.iov.cowin.befsale.clue.controller.cus.vo.response.ClueDetailResponse;
import com.tencent.iov.cowin.befsale.clue.controller.cus.vo.response.ClueDictionariesResponse;
import com.tencent.iov.cowin.befsale.clue.controller.cus.vo.response.CustomerResponse;
import com.tencent.iov.cowin.befsale.clue.controller.cus.vo.request.AddClueCustomerFollowRequest;
import com.tencent.iov.cowin.befsale.clue.controller.cus.vo.request.QueryClueDetailRequest;
import com.tencent.iov.cowin.befsale.clue.controller.cus.vo.request.UpdateClueCustomerRequest;
import com.tencent.iov.cowin.befsale.clue.controller.cus.vo.request.UpdateClueEmpRequest;

import java.util.List;

/**
 * @Describe: 跟进线索详情_Service接口层
 * @author: xiamu
 * @created: 2021-12-21 17:29:54
 * @version: 1.0
 */
public interface ClueCustomerDetailService {

    /**
     * 根据线索ID获取详情信息
     * @param request 参数
     * @return 线索详情信息
     */
    ClueDetailResponse getClueDetail(QueryClueDetailRequest request);

    /**
     * 更新线索客户信息
     * @param request 请求参数
     * @return 是否更新成功
     */
    Boolean updateClueCustomerDetail(UpdateClueCustomerRequest request);

    /**
     * 更新线索跟进信息
     * @param request 请求参数
     * @return 是否更新成功
     */
    Boolean saveClueCustomerFollowInfoByParam(AddClueCustomerFollowRequest request);

    /**
     * 分配顾问（批量）
     * @param updateClueEmpRequest 线索信息
     * @return 是否成功
     */
    Boolean updateClueFollowEmp(UpdateClueEmpRequest updateClueEmpRequest);


    /**
     * 修正战败客户信息
     * @param updateClueEmpRequest 线索信息
     * @return 是否成功
     */
    Boolean updateFailClueFollow(UpdateClueEmpRequest updateClueEmpRequest);


    /**
     * 获取线索客户基本信息
     *
     * @param type 类型 标识意向/基本信息
     * @return 字典列表
     */
    List<ClueDictionariesResponse> getListDictionaries(Integer type);

    void updateClueCustomerBackend(UpdateClueCustomerRequest request);

    void clueFollowBackend(AddClueCustomerFollowRequest request);

    void clueFailFollowBackend(UpdateClueEmpRequest updateClueEmpRequest);

    CustomerResponse getCustomerByCusId(Long clueId);
}
